package day3;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.Year;
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;

/**
 * 实现时间的计算: 要求用户输入身份证号，若格式有误，要求其重新输入。然后根据身份证号码输出20岁生日
 * 所在周的周三的日期。
 * 例如:
 * 出生日期:1992-07-15。
 * 20岁生日:2012-07-15
 * 当周的周三为:2012-07-18
 * @author Bonnie
 *
 */
public class Test05 {
    public static void main(String[] args) throws ParseException {
        Scanner input=new Scanner(System.in);
        System.out.println("请输入身份证号：");
        while(input.hasNext()){
            String idCard=input.nextLine();
            String regex="[\\d]{17}[A-Z0-9]";
            if (idCard.matches(regex)) {
                int year=Integer.parseInt(idCard.substring(6,10));
                String month=idCard.substring(10,12);
                String day=idCard.substring(12,14);
                year=year+20;
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
                String birthday=year+ "-"+month+"-"+day;
                Calendar cal=Calendar.getInstance();
                Date birthdayDate = simpleDateFormat.parse(birthday);
                cal.setTime(birthdayDate);
                int week=cal.get(Calendar.DAY_OF_WEEK);
                System.out.println(week);
                if(week>4){
                    int b=week-4;
                    cal.add(Calendar.DAY_OF_MONTH, -b);
                }else if(week<4){
                    int c=4-week;
                    cal.add(Calendar.DAY_OF_MONTH, c);
                }
                Date date1=cal.getTime();
                String date=simpleDateFormat.format(date1);
                System.out.println(date);
                break;
            }
            else
                System.out.println("输入格式错误，请重新输入身份证号：");
        }
    }
}

